## Перебор списков

__Задание 1.__ Дан список. Вывести элементы списка с помощью оператора `for`.
Каждый элемент должен быть выведен с новой строки.

`my_list = [24, "Василий", "выхухоль", 42, -12.5]`

__Задание 2.__ Вывести элементы предыдущего списка, пронумеровав их начиная с единицы.
Каждый элемент должен быть выведен с новой строки.

__Задание 3.__  Сформировать список из `n` элементов, заполненный произвольными целыми числами в диапазоне от `-10 до 10`.

Вывести на экран сумму всех элементов данного списка.

__Задание 4.__  Вводятся три целых числа в одну строку через пробел. 
Сформируйте список `lst`, хранящий эти значения в порядке их ввода. 


`print(lst)`
### Входные данные:
`8 11 3`
### Выходные данные:
`[8, 11, 3]`

__Задание 5.__  Вводятся названия городов в одну строчку через пробел. 

На основе этой строки формируется список с помощью команды:

```python
cities = input().split()
```

Необходимо вывести значение последнего элемента этого списка на экран.
### Входные данные:
`Москва Питер Уфа Казань Владимир`
### Выходные данные:
`Владимир`

## Практика методы списков

__Задание 1.__ Даны два целых числа. 

Вывести список всех чисел кратных трем в диапазоне между заданными числами.
```python
first_number = int(input())     # Первое число
second_number = int(input())    # Второе число
```


__Задание 2.__ Дан список из элементов
```python
x = [-2,-1,0,1,2,3,4,5,6,7]
```
это координаты х, точек, лежащих на прямой, описываемой уравнением `y = 2x-4`.

Получить и вывести на экран список координат y для данного уравнения прямой.

__Задание 3.__ Пользователь вводит на экран дату в формате `dd.mm.yyyy`, например: `02.01.2013`.

Ваша задача вывести дату в текстовом виде, например: `второе января 2013 года`.

Подсказка: 
* создайте списки с названием дней и названиями месяцев. 
* для экономии времени, можно ограничить номер дня десятью.
* склонениями названий можно пренебречь

__Задание 4.__ Вводятся оценки студента (целые числа от 2 до 5) в одну строчку через пробел. 

На основе введенной строки формируется список командой:
```python
marks = list(map(int, input().split()))
```
Необходимо вычислить средний балл и вывести его на экран с точностью до десятых (один знак после запятой).
### Входные данные:
`3 3 2 4 4 5 4 3 2`
### Выходные данные:
`3.3`

__Задание 5.__ Вводится информация по книге (каждое значение с новой строки): 

`название, автор, число страниц (целое число), цена (вещественное число)`. 

На основе этих данных формируется список `book` с элементами в порядке их ввода. 

Затем, из этого списка необходимо удалить `3-й элемент (число страниц)`, в качестве автора записать `"Пушкин"` и цену увеличить в `2` раза. 

### Входные данные:
```
Мастер и Маргарита
Булгаков
233
435.45
```
### Выходные данные:
`['Мастер и Маргарита', 'Пушкин', 870.9]`


__Задание 6.__ Вводятся названия городов в одну строку через пробел. 

На основе этой строки необходимо создать список `lst` и добавить его в конец следующего списка:
```python
cities = ["Москва", "Тверь", "Вологда"]
```

Вывести результат на экран командой:
```python
print(*lst)
```

### Входные данные:
`Уфа Казань Севастополь`
### Выходные данные:
`Москва Тверь Вологда Уфа Казань Севастополь`

__Задание 7.__ Имеется список городов:
```python
c = ["Москва", "Ульяновск", "Самара", "Тверь", "Вологда", "Омск", "Уфа"]
```
Необходимо с помощью срезов выбрать из него города через один (начиная с первого) и результат вывести на экран.

### Выходные данные:

`['Москва', 'Самара', 'Вологда', 'Уфа']`


__Задание 8.__ Имеется список городов:
```python
c = ["Москва", "Ульяновск", "Самара", "Тверь", "Вологда", "Омск", "Уфа"]
```
Необходимо с помощью срезов выбрать из него города через один (начиная со второго) и результат вывести на экран.

### Выходные данные:
`['Ульяновск', 'Тверь', 'Омск']`


__Задание 9.__ Вводится строка с номером телефона в формате:

`+7(xxx)xxx-xx-xx`

Необходимо преобразовать ее в список lst (посимвольно, то есть, элементами списка будут являться отдельные символы строки). 

Затем, удалить первый '+', число 7 заменить на 8 и убрать дефисы. 
Отобразить полученный список на экране командой:

```python
print("".join(lst))
```
### Входные данные:
`+7(912)123-45-67`
### Выходные данные:
`8(912)1234567`

__Задание 10.__ Вводятся названия рек в одну строчку через пробел.

Необходимо все их отсортировать по именам (по возрастанию) и в отсортированном списке удалить первый элемент.

Результат отобразить на экране в одну строчку через пробел.

### Входные данные:
`Лена Обь Волга Дон Енисей`
### Выходные данные:
`Дон Енисей Лена Обь`

__Задание 11.__ Строка содержит только заглавные буквы латинского алфавита (ABC…Z). 

Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами.

Например, в тексте `CBCABABACCC` есть комбинации `CBC, ABA` (два раза), `BAB и CCC`. 

Чаще всего  — 3 раза  — между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B - 3.

### Входные данные:
```FPFHQDFWBPLLIJZPNKJEFWVHWNOKPRHUYVDALCXTQXHLSKTJGENYIDHSCPRBNUBMPICEHRRIQDSWDCWJFNQEPRFLDJFXSBUBECRZXHSPNPCQSACBBGMZBONQCKFFDAZBKJBTVCHMORBSFTQBHGDNDWXTEUQAHZDZXTOXHGIUKXMWBOQKTCYNCVPUWISKCNLENHFLQAIQAGNQUOVIFOBMNJOHFTRITCBZTWGVXSXOJUBZMABSGBUVXBKKPBZPVQHLBLTJVDMIVKWUNDWGNZXOOOWUFTSNNENKFTFQDTJACANYWCZQDUMBDNYZGCZUIQRIVXINGWJBQTXYQHWALCXISXPDJOXYLSQBOFWUETLQJUQHKFGNZMFIRRDHQTXYENGUVZEKWMDXAWPRNCPEUORSTADPRDTPQYFTBUHXWJYNESUMMNQFXIYXBCZEPZJXHGQBINTXHDL```

### Выходные данные:
`N - 2`

__Задание 12.__ Вводится  матрица чисел из трех строк.

В каждой строке числа разделяются пробелом. 

Необходимо вывести на экран последний столбец этой матрицы в виде строки из трех чисел через пробел.
### Входные данные:
```
8 11 12 1
9 4 36 -4
1 12 49 5
```
### Выходные данные:
`1 -4 5`

__Задание 13.__ Имеется вложенный список из трех строк:
```python
t = [["Скажи-ка", "дядя", "ведь", "не", "даром"],
    ["Я", "Python", "выучил", "с", "каналом"],
    ["Специалист", "что", "раздавал?"]]
```
Необходимо реализовать проверку на наличие в этом списке введенного слова. 

Результат `(True или False)` вывести на экран. 

Решить задачу необходимо без применения условного оператора.
### Входные данные:
`дядя`
### Выходные данные:
`True`


## Практика генераторы списков

__Задание 1.__ Вводятся вещественные числа в строку через пробел.

Необходимо на их основе сформировать список `lst` с помощью `list comprehension` (генератора списков) из модулей введенных чисел (в списке должны храниться именно числа, а не строки).

### Входные данные:
`5.56 -8.7 1.0 3.14 77.845`
### Выходные данные:
`[5.56, 8.7, 1.0, 3.14, 77.845]`

__Задание 2.__  Вводится семизначное целое положительное число. 

С помощью `list comprehension` сформировать список `lst`, содержащий цифры этого числа (в списке должны быть записаны числа, а не строки). 

### Входные данные:
`4567397`
### Выходные данные:
`[4, 5, 6, 7, 3, 9, 7]`

__Задание 3.__  Вводятся названия городов в строку через пробел. 

Необходимо сформировать список с помощью `list comprehension`, содержащий названия длиной более пяти символов. 

### Входные данные:

`Казань Уфа Москва Челябинск Омск Тур Самара`

### Выходные данные:
`Казань Москва Челябинск Самара`

__Задание 4.__ Вводится натуральное число n. 

Необходимо сформировать список с помощью `list comprehension`, состоящий из делителей числа `n` (включая и само число n). 

Результат вывести на экран в одну строку через пробел.

### Входные данные:
`10`
### Выходные данные:
`1 2 5 10`

__Задание 5.__ Вводится натуральное число `N`. 

Необходимо сгенерировать вложенный список с помощью `list` comprehension, размером `N x N`, где первая строка содержала бы все нули, вторая - все единицы, третья - все двойки и так до N-й строки. 

Результат вывести в виде таблицы чисел как показано в примере ниже.

### Входные данные:
`4`
### Выходные данные:
```
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
```
__Задание 6.__ Вводится список вещественных чисел.

С помощью `list comprehension` сформировать список, состоящий из элементов введенного списка, имеющих четные индексы (то есть, выбрать все элементы с четными индексами). 

Результат вывести на экран в одну строку через пробел.

### Входные данные:
`8.5 11.3 1.0 -4.5 11.34 6.45`

### Выходные данные:
`8.5 1.0 11.34`

__Задание 7.__  Вводятся два списка целых чисел одинаковой длины каждый с новой строки. 

С помощью `list comprehension` сформировать третий список, состоящий из суммы соответствующих пар чисел введенных списков. 

Результат вывести на экран в одну строку через пробел.

### Входные данные:
```
1 2 3 4 5
6 7 8 9 10
```
### Выходные данные:
`7 9 11 13 15`

__Задание 8.__ Вводится список городов в одной строке. 

Необходимо с помощью `list comprehension` сформировать список `lst`, содержащий вложенные списки из пар:
```
<город> <численность населения>
Численность населения - целое число в тыс. человек. 
```

### Входные данные:
`Москва 15000 Уфа 1200 Самара 1090 Казань 1300`
### Выходные данные:
`[['Москва', 15000], ['Уфа', 1200], ['Самара', 1090], ['Казань', 1300]]`



__Задание 9.__  Программа принимает на вход длину пароля и выводит случайный пароль, содержащий только символы английского алфавита a..z, A..Z (в нижнем и верхнем регистре). 

Применить генератор списка.

__Задание 10.__ С помощью генератора списков создать список из 20 случайных паролей

Дополнить задачу. В каждом пароле обязательно должна присутствовать хотя бы одна цифра и как минимум по одной букве в верхнем и нижнем регистре (используем set).

__Задание 11.__ IP адрес состоит из четырех чисел из диапазона от 0 до 255 (включительно), разделенных точкой.

Напишите программу, которая с помощью модуля random генерирует и возвращает случайный корректный IP адрес.


__Задание 12.__ Напишите программу, которая с помощью модуля `random` генерирует 20 случайных номеров лотерейных билетов и выводит их каждый на отдельной строке. Обратите внимание, вы должны придерживаться следующих условий:

* номер не может начинаться с нулей;
* номер лотерейного билета должен состоять из 7 цифр;
* все 10 лотерейных билетов должны быть различными.


# Итоговое задание по модулям 4,5


У вас есть список слов: “книга”, “месяц”, “ручка”, “шарик”, “олень”, “носок”. 

Необходимо выбрать случайным образом слово и отрисовать его, используя 

вместо букв какие-либо символы, например `'\u25A0' (■), ‘\u2660' (♠) или '\u2665' (♥)`

Необходимо установить счётчик “жизни” в какое-либо значение, например 5

* Предложить игроку ввести букву или всё слово целиком.
* Если буква правильная, то слово перерисовывается с видимой буквой.
* Если буква неправильная, то у игрока отнимается одна “жизнь”.
* Если игрок ввёл слово и это слово правильно, либо это последняя правильная буква, либо у игрока закончились “жизни”, то игра заканчивается.



Примерный вид программы

![alt text](img/pole.png)

